package struct;

public class Intervalle {
	public float a;
	public float b;

	public Intervalle(double a, double b) {
		this.a = (float) Math.min(a, b);
		this.b = (float) Math.max(a, b);
	}

	public Intervalle() {
		this(0, 0);
	}

	public void normaliser() {
		if (a > b) {
			float u = b;
			b = a;
			a = u;
		}
	}

	public boolean coupe(Intervalle I) {
		return (a <= I.a && I.a <= b) || (a <= I.b && I.b <= b);
	}

	public static boolean intersection(Intervalle I, Intervalle J) {
		// System.out.println(I.a+" "+I.b+" // "+J.a+" "+J.b);
		return I.coupe(J) || J.coupe(I);
	}

	public static float dans(Intervalle I, Intervalle J) {
		// System.out.println(I.a+" "+I.b+" // "+J.a+" "+J.b);
		if (J.a > I.a)
			return (J.a - I.a);
		if (J.b < I.b)
			return (J.b - I.b);
		return 0;
	}
	
	public boolean appartient(float x) {
		return (a <= x) && (x <= b);
	}
	
	public float longueur() {
		return b-a;
	}
	
	public String toString() {
		return "["+a+", "+b+"]";
	}
}
